﻿
using System;
using System.Runtime.Serialization;
using V82;
using V82.Перечисления;//Ссылка;
namespace V82.Перечисления//Ссылка
{
	[DataContract]
	public enum ТипыВладельцевЭЦП
	{
		[NonSerialized]
		ПустаяСсылка = - 1,
		[EnumMember(Value = "{\"Ссылка\":\"3b1be5d0-8d48-4184-b286-96c36ef2f61b\", \"Представление\":\"Руководитель\"}")]
		Руководитель = 0,
		[EnumMember(Value = "{\"Ссылка\":\"fc9868b4-f73e-4b6a-b597-e298519201fe\", \"Представление\":\"ГлавныйБухгалтер\"}")]
		ГлавныйБухгалтер = 1,//Главный бухгалтер
		[EnumMember(Value = "{\"Ссылка\":\"c0b9b9a1-aeee-4ae5-8fef-da05aee62578\", \"Представление\":\"ДругойСотрудник\"}")]
		ДругойСотрудник = 2,//Другой сотрудник
	}
	public static partial class ТипыВладельцевЭЦП_Значения//:ПеречислениеСсылка
	{
		public static readonly Guid Руководитель = new Guid("c39686b2-f26e-1bf6-4184-8d483b1be5d0");
		public static readonly Guid ГлавныйБухгалтер = new Guid("98e297b5-9251-fe01-4b6a-f73efc9868b4");//Главный бухгалтер
		public static readonly Guid ДругойСотрудник = new Guid("05daef8f-e6ae-7825-4ae5-aeeec0b9b9a1");//Другой сотрудник
		public static ТипыВладельцевЭЦП Получить(this ТипыВладельцевЭЦП Значение, byte[] Ссылка)
		{
			return Получить(Значение, new Guid(Ссылка));
		}
		public static ТипыВладельцевЭЦП Получить(this ТипыВладельцевЭЦП Значение, Guid Ссылка)
		{
			if(Ссылка == Руководитель)
			{
				return ТипыВладельцевЭЦП.Руководитель;
			}
			else if(Ссылка == ГлавныйБухгалтер)
			{
				return ТипыВладельцевЭЦП.ГлавныйБухгалтер;
			}
			else if(Ссылка == ДругойСотрудник)
			{
				return ТипыВладельцевЭЦП.ДругойСотрудник;
			}
			return ТипыВладельцевЭЦП.ПустаяСсылка;
		}
		public static byte[] Ключ(this ТипыВладельцевЭЦП Значение)
		{
			return Ссылка(Значение).ToByteArray();
		}
		public static Guid Ссылка(this ТипыВладельцевЭЦП Значение)
		{
			switch (Значение)
			{
				case ТипыВладельцевЭЦП.Руководитель: return Руководитель;
				case ТипыВладельцевЭЦП.ГлавныйБухгалтер: return ГлавныйБухгалтер;
				case ТипыВладельцевЭЦП.ДругойСотрудник: return ДругойСотрудник;
			}
			return Guid.Empty;
		}
	}
}